With recent advances in digital data transmission techniques and digital video compression, such as used in the MPEG-2 standard, it is possible to deliver several digitally compressed video programs in the same bandwidth presently occupied by a single analog television (TV) channel. These capabilities provide opportunities for programming service providers (e.g., broadcasters such as CNN, ABC), network operators (e.g., cable and satellite network owners), and end users.
In a multi-program transmission environment, several programs (e.g., channels) are coded, multiplexed and transmitted over a single communication channel. Since these programs share a limited channel capacity, the aggregate bit rate of the programs must be no greater than the communication channel rate. Accordingly, many video encoding applications utilize statistical multiplexing techniques to combine several programs each comprising a compressed video bit stream into a single multiplexed bit stream, e.g., for transmission on a single channel. The bit rate of a given compressed stream generally varies with time based on the complexity of the corresponding video signals. A statistical multiplexer attempts to estimate the complexity of the various video frame sequences of a video signal and allocates channel bits among the corresponding compressed video bit streams so as to provide an approximately constant level of video quality across all of the multiplexed streams. For example, a given video frame sequence with a relatively large amount of spatial activity or motion may be more complex than other sequences and therefore allocated more bits than the other sequences.
An example of a statistical multiplexing encoding system is described in M. Perkins & D. Arnstein, Statistical Multiplexing of Multiple MPEG-2 Video Programs in a Single Channel, SMPTE J., vol. 104, no. 9, p. 596-599, September, 1995. As described in this reference, multiple encoders each receive a respective program, encode the program, and place their compressed picture data of a video signal of the program in a corresponding buffer of fixed size pending submission to a multiplexer. (As per MPEG-2 parlance, a “program” is a collection of one or more related signals. Herein, a program is presumed to include a video signal but may also include one or more associated audio signals, a close caption text signal, etc.) A multiplexer receives the encoded programs from the multiple encoders, in the form of a bit stream. A different bit rate may be assigned to each bit stream depending on a respective estimate of the number of bits needed by the video bit stream of the corresponding program to achieve the same level of quality as the other programs with which it is multiplexed. (Generally speaking, the bit rate of the video bit stream of a program is variable whereas the bit rates of the audio and other associated bit streams of a program are constant. This invention is illustrated in the context of adjusting only the bit rate of the video bit stream portion of a program.) On the receiving end of the communication, a decoder receives the multiplexed multiple program bit stream and discards the data it does not need (e.g., if the decoder is a set top box, only the “tuned” or selected program is retained, whereas the data of each non-selected program is discarded). The retained data is inputted to the decoder's input buffer of a fixed size pending decoding. The removal of data from the decoder buffer for decoding is controlled in a strict fashion to affect a constant end-to-end delay for any selected program. In the statistical multiplexing encoding scheme, the relative timing of each to-be-multiplexed program is independent. A first encoder for a first program may have many pictures of compressed data in its buffer pending submission to the multiplexer while a second encoder for a second bit stream may have only a few pictures in its buffer pending submission to the multiplexer. A decoder that selects the first program for decoding will be receiving “earlier” pictures than a decoder that selects the second program for decoding. Such a variable delay is eliminated by each decoder lengthening or shortening the amount of time the received pictures spend in the decoder buffer pending decoding to effect the above-noted constant end-to-end delay.
FIG. 1 shows an example of a conventional statistical multiplexer 10. The statistical multiplexer 10 includes a number n of video sources 12-i, i=1, 2, . . . n. Each of the n video sources 12-i supplies a video signal (e.g., a video bit stream) to a corresponding encoder 14-i. The encoders 14-i generate compressed video bit streams which are supplied to a multiplexer 16. The multiplexer 16 combines all of the compressed video bit streams into a single multiplexed bit stream. Each of the encoders 14-i sends statistics about the video bit stream that it is encoding to a statistics computer 18. The statistics computer 18 uses the statistics received from the encoders 14-i to determine a suitable allocation of available channel bits among the n video bit streams. The statistics computer 18 sends information regarding the allocated bit rate of each video bit stream to the corresponding encoders 14-i.
In some statistical multiplexers the encoders and multiplexer are duplicated to provide a degree of fault tolerance. Thus, if an encoder, for example, should fail, a backup encoder is available to take its place. Similarly, if the multiplexer should fail, it can be exchanged for a backup multiplexer that is ready to go online. For purposes of communication among the various components, each encoder and multiplexer is assigned an identifier. The identifiers may be assigned in a fixed or dynamic manner. If the identifiers are allocated in a fixed manner, each component has a unique identifier that does not change regardless of whether the component is on or off line. In dynamic allocation, on the other hand, if a given encoder should fail, the backup encoder that takes its place also takes its identifier. For example, if an encoder designated “encoder 1” should fail, the backup encoder will be designed “encoder 1” when it comes on line.
Dynamic identity allocation is often preferable to fixed identity allocation because it provides a greater degree of flexibility and, potentially, increased signaling efficiency. However, a problem could arise if a component falsely issues a message using the identity of another component under fault conditions. For example, if an encoder (or multiplexer) designated “encoder 1” should fail but continues to generate signals, both it and the backup encoder that takes its place may issue messages that appear to originate from “encoder 1.”
Accordingly, it would be desirable to provide a statistical multiplexer having redundant encoders and multiplexers that uses dynamic identity allocation and avoids the aforementioned problem.